package com.example.rpc_core.protocal;


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 协议消息结构
 * @param <T>
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProtocolMessage<T> {
    /**
     * 消息头
     */
    private Header header;
    /**
     * 消息体
     */
    private T body;

    /**
     * 协议消息头
     */
    @Data
    public static class  Header{

        /**
         * 魔数
         */
        private byte magic;
        /**
         * 版本号
         */
        private byte version;

        /**
         * 序列化器
         */
        private byte serializable;
        /**
         * 消息类型
         */
        private byte type;

        /**
         * 状态
         */
        private byte status;

        /**
         * 亲求id
         */
        private long requestId;

        /**
         * 消息体长度
         */
        private  int bodyLength;
    }

}
